package com.example.materialviewpagerdemo.util;

import android.graphics.Color;
import android.graphics.Typeface;
import android.support.v4.util.TimeUtils;

import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.AxisBase;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.formatter.IAxisValueFormatter;

import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.List;

public class ChartUtil {
    /**
     * 设置图表数据
     *
     * @param chart  图表
     * param values 数据
     */
    public static LineChart initChart(LineChart chart) {
        // 不显示数据描述
        chart.getDescription().setEnabled(false);
        // 没有数据的时候，显示“暂无数据”
        chart.setNoDataText("暂无数据");
        // 不显示表格颜色
        chart.setDrawGridBackground(false);
        // 不可以缩放
        chart.setScaleEnabled(false);
        // 不显示y轴右边的值
        chart.getAxisRight().setEnabled(false);
        // 不显示图例
        Legend legend = chart.getLegend();
        legend.setEnabled(false);
        // 向左偏移15dp，抵消y轴向右偏移的30dp
        chart.setExtraLeftOffset(-15);

        XAxis xAxis = chart.getXAxis();
        // 不显示x轴
        xAxis.setDrawAxisLine(false);
        // 设置x轴数据的位置
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setTextColor(Color.WHITE);
        xAxis.setTextSize(12);
        xAxis.setGridColor(Color.parseColor("#30FFFFFF"));
        // 设置x轴数据偏移量
        xAxis.setYOffset(-12);

        YAxis yAxis = chart.getAxisLeft();
        // 不显示y轴
        yAxis.setDrawAxisLine(false);
        // 设置y轴数据的位置
        yAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
        // 不从y轴发出横向直线
        yAxis.setDrawGridLines(false);
        yAxis.setTextColor(Color.WHITE);
        yAxis.setTextSize(12);
        // 设置y轴数据偏移量
        yAxis.setXOffset(30);
        yAxis.setYOffset(-3);
        yAxis.setAxisMinimum(0);

        //Matrix matrix = new Matrix();
        // x轴缩放1.5倍
        //matrix.postScale(1.5f, 1f);
        // 在图表动画显示之前进行缩放
        //chart.getViewPortHandler().refresh(matrix, chart, false);
        // x轴执行动画
        //chart.animateX(2000);
        chart.invalidate();
        return chart;
    }

    /** * 设置图表数据 * *
     * @param chart 图表 *
     * @param values 数据 */
    public static void setChartData(LineChart chart, List<Entry> values)
    {
        chart.setDrawBorders(false);//环线显示
        chart.getDescription().setEnabled(false);
        chart.getAxisRight().setEnabled(false);
    // 不显示图例
        Legend legend = chart.getLegend();
        legend.setEnabled(false);

//
//        XAxis xAxis = chart.getXAxis();
//        xAxis.setAxisLineWidth(2f);
//        xAxis.setDrawGridLines(false);   //不绘制x轴网格线
        YAxis yAxis=chart.getAxis(YAxis.AxisDependency.RIGHT);
        yAxis.setEnabled(false);
        yAxis.setDrawGridLines(false);
        yAxis.setDrawAxisLine(false);
        yAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
        YAxis ys=chart.getAxisLeft();
        ys.setDrawAxisLine(false);         // 不显示y轴
        ys.setTextSize(12f);
        ys.setTextColor(Color.parseColor("#ffffff"));
        ys.setDrawAxisLine(false);
        ys.setGridColor(Color.parseColor("#ffffff"));
        XAxis xAxis=chart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setTextSize(12f);
        xAxis.setTextColor(Color.parseColor("#ffffff"));
        xAxis.setGridColor(Color.parseColor("#ffffff"));


        LineDataSet lineDataSet;
        if (chart.getData() != null && chart.getData().getDataSetCount() > 0)
        {
            lineDataSet = (LineDataSet) chart.getData().getDataSetByIndex(0);
            lineDataSet.setValues(values);
            chart.getData().notifyDataChanged();
            chart.notifyDataSetChanged();
        } else {
            lineDataSet = new LineDataSet(values, "");
            lineDataSet.setColor(Color.parseColor("#ffffff")); // 设置曲线颜色
            lineDataSet.setLineWidth(3f);
            lineDataSet.setMode(LineDataSet.Mode.LINEAR); // 设置折线曲线
            lineDataSet.setDrawCircles(true); // 显示坐标点的小圆点
            lineDataSet.setDrawValues(true);// 显示坐标点的数据
            lineDataSet.setHighlightEnabled(false); // 不显示定位线
            LineData data = new LineData(lineDataSet);
            data.setValueTextColor(Color.parseColor("#ffffff"));
            data.setValueTextSize(15f);
            chart.setData(data);
            chart.invalidate();
        }
    }




    public static float toFloat(String s){
        float result=0.0f;
        result=Float.parseFloat(s);
        DecimalFormat df = new DecimalFormat("#########.#");
        result=Float.parseFloat(df.format(result));
        return result;
    }
    public static String praseData(String data){
        char[] a=data.toCharArray();
        StringBuilder stringBuilder=new StringBuilder();
        for(int i=5;i<10;i++){
            stringBuilder.append(a[i]);
        }
//        显示具体时间
//        stringBuilder.append(" ");
//        for(int i=11;i<16;i++){
//            stringBuilder.append(a[i]);
//        }
        String newData=new String(stringBuilder);
        return newData;
    }

    public static void setBarChartData(BarChart chart, List<BarEntry> values)
    {

        chart.getDescription().setEnabled(false);
        chart.getAxisRight().setEnabled(false);
        // 不显示图例
        Legend legend = chart.getLegend();
        legend.setEnabled(false);

//
//        XAxis xAxis = chart.getXAxis();
//        xAxis.setAxisLineWidth(2f);
//        xAxis.setDrawGridLines(false);   //不绘制x轴网格线
        YAxis yAxis=chart.getAxis(YAxis.AxisDependency.RIGHT);
        yAxis.setEnabled(false);
        yAxis.setDrawGridLines(false);
        yAxis.setDrawAxisLine(false);
        yAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
        YAxis ys=chart.getAxisLeft();
        ys.setDrawAxisLine(false);         // 不显示y轴
        ys.setTextSize(12f);
        ys.setTextColor(Color.parseColor("#ffffff"));
        ys.setDrawAxisLine(false);
        ys.setGridColor(Color.parseColor("#ffffff"));
        XAxis xAxis=chart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setTextSize(12f);
        xAxis.setTextColor(Color.parseColor("#ffffff"));
        xAxis.setGridColor(Color.parseColor("#ffffff"));
        BarDataSet barDataSet;
        if (chart.getData() != null && chart.getData().getDataSetCount() > 0)
        {
            barDataSet = (BarDataSet) chart.getData().getDataSetByIndex(0);
            barDataSet.setValues(values);
            chart.getData().notifyDataChanged();
            chart.notifyDataSetChanged();
        } else {
            barDataSet = new BarDataSet(values, "");
            barDataSet.setColor(Color.parseColor("#ffffff")); // 设置曲线颜色
//            barDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); // 设置平滑曲线
//            lineDataSet.setDrawCircles(true); // 显示坐标点的小圆点
            barDataSet.setDrawValues(true);// 显示坐标点的数据
            barDataSet.setHighlightEnabled(false); // 不显示定位线
            BarData data = new BarData(barDataSet);
            chart.setData(data);
            data.setValueTextColor(Color.parseColor("#ffffff"));
            data.setValueTextSize(15f);
            chart.invalidate();
        }
    }

}
